#ifndef __EVENTMOUSE_HPP__
#define	__EVENTMOUSE_HPP__

#include <IEventReceiver.h>

#include "../EventBase.hpp"

namespace Event
{

    class EventMouse :
    public EventBase
    {
    protected:
        /**
         * @fn       EventMouse()
         * @brief    Contructor
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventMouse( const irr::SEvent::SMouseInput& _mouseInput, float _timeToWait = 0, int _nbFires = 0) :
        EventBase(EVENT_MOUSE, _timeToWait, _nbFires),
        m_mouseEvent(_mouseInput)
        {
        }
    public:
        /**
         * @fn       EventMouse()
         * @brief    Contructor
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventMouse(void * _sender, const irr::SEvent::SMouseInput& _mouseInput, float _timeToWait = 0, int _nbFires = 0) :
        EventBase(_sender, EVENT_MOUSE, _timeToWait, _nbFires),
        m_mouseEvent(_mouseInput)
        {
        }

        /**
         * @fn       EventMouse(const EventMouse& orig)
         * @brief    Copy Contructor
         * @param    orig       Copy of the event we have to do
         */
        EventMouse(const EventMouse& orig) :
        EventBase(orig),
        m_mouseEvent(orig.m_mouseEvent)
        {
        }

        /**
         * @fn       getMouseEvent()
         * @brief    Getter on the event
         * @return   event
         */
        irr::SEvent::SMouseInput getMouseEvent()
        {
            return m_mouseEvent;
        }

        /**
         * @fn       ~EventMouse()
         * @brief    Virtual Destructor
         */
        virtual ~EventMouse()
        {
        }
    private:
        irr::SEvent::SMouseInput  m_mouseEvent;

    };

} //  namespace Event


#endif	/* __EVENTMOUSE_HPP__ */

